home *** CD-ROM | disk | FTP | other *** search
/ The PC-SIG Library 10 / The PC-Sig Library - Shareware for the IBM PC and Compatibles (PC-SIG)(Tenth Edition Disks 1-2804)(1991).iso / PC_SIGCD / 20 / 5 / DISK2058.ZIP / UNFAST.EXE / COMMAND.HLP < prev    next >
Text File  |  1980-01-01  |  47KB  |  1,313 lines

  1.  COMMANDS
  2.  ========
  3.  
  4. Commands are FAST functions in effect, which don't return any value, they
  5. perform a task with no resulting value to return.
  6.  
  7. Notes:      +   represents a command which is considered advanced.
  8.             $$$ represents a command which is not working yet - work needed.
  9. ASCIIZ      ASCIIZ n
  10.  
  11. Changes the end character of the string at address n to 0.
  12. The string at address n must be defined using STRING and input from the
  13. keyboard using INPUTS.
  14.  
  15. ASCIIZ strings are used for making calls to dos (either using FAST's file
  16. commands or direct to DOS via int 21h). ASCIIZ strings usually represent
  17. file or directory names.
  18.  
  19. To see how a string is stored in memory then see the STRING command.
  20.  
  21. ASCIIZ = ASCII ZERO, any string of ASCII characters with a 0 bytes to mark the
  22. end.
  23. BEEP         BEEP
  24.  
  25. 'PRINTs' the bell character (7) using the standard output.
  26. BREAK         BREAK
  27.  
  28. Executes the active ON BREAK statement.
  29. Same as pressing CTRL-C or CTRL-SCROLL_LOCK.
  30. BRIGHT      BRIGHT n
  31.  
  32. Sets the brightness used by the PRINT commands.
  33. Sets the 'b' bit in the COLOUR variable.
  34. CALL       + CALL address
  35.  
  36. The code at the specified address is executed.
  37.  
  38. If the address is a SEGMENT|OFFSET then an inter-segment call is used, to return
  39.  
  40. the subroutine must return using a RETF (return far).
  41.  
  42. If the address is just an OFFSET (ie same code segment) then returning from the
  43. subroutine is done using a RET assembly instruction or RETURN command.
  44. CHANGE      CHANGE DISK b
  45.  
  46. Changes the default drive to b, b=0 for A:, b=1 for B: etc...
  47.  
  48. CHANGE DISK does not include error checking, to test if a CHANGE DISK is
  49. sucessful then test using the function CDISK.
  50.  
  51. Example:
  52.  
  53. CHANGE DISK new_drive
  54. if CDISK<>new_drive then error 15   ;Invalid drive spec.
  55. CHANGE      CHANGE DIR pathname
  56.  
  57. Sets the current directory to a new pathname, with ERROR checking.
  58. CLOCKS    + CLOCKS n
  59.  
  60. Sets the new timer tick frequency to n.
  61. This should not normally be changed becuase it effects the computers time
  62. but can be useful for doing crucial timing at your own speeds.
  63.  
  64. The timer frequency is 1193181 / n.
  65.  
  66. Example.
  67.  
  68. CLOCKS 29829    ;1193181 / 40
  69. ON INT 1
  70.     {
  71.     ;this is done 40 times a second.
  72.     }
  73.  
  74. wait for key=27     ;Until escape is pressed.
  75. STOP INT 1
  76. CLOCKS 0            ;Reset timer tick to 18.2 second intervals (default).
  77. CLOSE         CLOSE #n
  78.  
  79. Closes the open file (opened by OPEN or CREATE), includes ERROR checking.
  80. CLOSE         CLOSE WINDOW[S]
  81.  
  82. Closes all open windows, does nothing if no windows are open.
  83. If singular (CLOSE WINDOW) but there are no open windows then an error 6 will
  84. be generated (invalid [window] handle), includes error checking.
  85. CLS         CLS
  86.  
  87. Clears the current display page (see multiple PAGEs).
  88.  
  89. To clear a text screen firstly set the COLOUR variable to the default
  90. background colour, eg 7 or 15.
  91.  
  92. To clear a graphics screen set the colour to 0.
  93. COLOUR      COLOUR b
  94. COLOR
  95.  
  96. Sets the colour value used by CLS, LINE, PLOT, PRINT, PRINTS, PRINTM & SCROLL.
  97. COLOUR can be used as a variable, except COLOUR b is used rather than COLOUR=b.
  98.  
  99. How is the colour used for?
  100.  
  101. TEXT: The colour is determined using 8 bits - 'fpppbiii' where
  102.             f   = FLASH on/off
  103.             ppp = PAPER (background) colour
  104.             b   = BRIGHT on/off
  105.             iii = INK (text) colour
  106. GRAPHICS: Colour is determined where COLOUR = 'm-----ii'
  107.             m   = mode where 0=normal, 1=toggle dot on/off (exclusive OR).
  108.             ii  = INK (foreground) colour.
  109.  
  110. Note ! COLOR is the same as COLOUR (two spellings - a first eh!, now all you
  111. foriegners can't complain).
  112.  
  113. The colour values for the text colour and background colour are:
  114.  
  115.             Decimal   Binary   Colour
  116.             -------------------------
  117.               0        000     Black
  118.               1        001     Blue
  119.               2        010     Red
  120.               3        011     Magenta
  121.               4        100     Green
  122.               5        101     Cyan
  123.               6        110     Yellow
  124.               7        111     White
  125. CONST         CONST[32] label=n [,...]
  126.  
  127. Assigns a constant value to a unique label.
  128.  
  129. CONST defines 16 bit labels (integer/word type), whereas CONST32 defines 32 bit
  130. labels (double word).
  131. CREATE      CREATE #n,filename [,reclen]
  132.  
  133. Creates a file, opens it for IO as file #n. Includes ERROR checking.
  134.  
  135. If the file already exists then the original is deleted.
  136. CURPOS      CURPOS=n
  137.  
  138. Sets the cursor position where n = y*256 + x.
  139. The complementary function is also called CURPOS.
  140. CURSOR      CURSOR y,x
  141.  
  142. Sets the cursor position used by PRINT DOS to row y, column x.
  143. CURTOLOC    CURTOLOC
  144.  
  145. CURSOR TO LOCATE sets the PRINT postion to the same as the CURSOR position.
  146. The flashing CURSOR is the next position for PRINT DOS commands to print at
  147. whereas the LOCATE or LOCPOS position is for the PRINT commands.
  148.  
  149. CURTOLOC is the same as: LOCATE HIGH CURPOS,LOW CURPOS
  150.                      or: LOCPOS=(CURPOS/256)*160+(CURPOS AND 255)*2
  151. DATA         DATA[B] n,string [,...]
  152.  
  153. Stores the values n and the strings in memory.
  154. DATA is for words (strings not allowed), DATAB is for bytes and strings.
  155. Data must not be in the running part of a program because it will be run as
  156. machine code. INLINE is the same as DATAB but makes it clear for a programmer
  157. to see that INLINE will contain machine code. INLINE comes from the Pascal
  158. command.
  159.  
  160. Put DATA statements at the end of a program.
  161.  
  162. Note ! n must be constant (not an undefined expression during compile time).
  163. DEALLOCATE  DEALLOCATE segment
  164.  
  165. The memory segment is deallocated (freed), no more references to the memory
  166. segment can be made. Includes ERROR checking.
  167.  
  168. Typically DEALLOCATE is used to free ALLOCATEd memory.
  169.  
  170. Note ! TERMINATE & STOP automatically deallocate all memory used, STOP RESIDENT
  171.        can be used to return to DOS while still retaining all allocated memory.
  172. DELETE      DELETE filename
  173.  
  174. Deletes the file, with ERROR checking.
  175. DIM     $$$ DIM[B] var(n[,m])
  176.  
  177. DIM = word elements, DIMB = bytes.
  178. Sets dimensions for an array to n [*m] elements.
  179. All the elements of an array can be used individually.
  180.  
  181. Example.
  182.  
  183. DIM board(8,8)
  184. board(4,4)=1:board(4,5)=2
  185. board(5,4)=2:board(5,5)=1
  186. PRINT board(x,y)
  187. DIR         DIR filename,address [,b]
  188.  
  189. Creates a table of directory entries at address.
  190. The optional b is for specifying an alternate attribute search from the
  191. default which finds all files of normal and/or archive and/or read only.
  192. See FIND FIRST for a file attribute break down.
  193.  
  194. The first word of the table contains the number of file entries in the table.
  195. Each entry after that is 13 bytes long, containing a "name.ext,0".
  196.  
  197.                offset
  198. Example table:  0000    2                       ;2 entries
  199.                 0002    'FAST.COM',0,?,?,?,?    ;0=chr 0
  200.                 000F    'FASTL.HLP',0,?,?,?     ;?=unknown value.
  201. DISABLE     DISABLE BREAK
  202.  
  203. Sets the ON BREAK statement to NULL, effectively disabling the BREAK key.
  204.  
  205. DISABLE   + DISABLE SERIAL
  206.  
  207. Serial Communications.
  208. Before returning to DOS the serial port interupts must be disabled, DISABLE
  209. SERIAL does this. ENABLE SERIAL will initialise the COM1 port and receive
  210. characters for you.
  211.  
  212. Example: See ENABLE SERIAL.
  213. DISABLE   + DISABLE INTERUPTS
  214.  
  215. Disables all interupts, such as the clock, keyboard & disk.
  216. This is probably only useful for hardware controlling software.
  217.  
  218. Note ! DISABLE INTERUPTS is the same as assembler CLI.
  219. DOS       + DOS b [(b)]
  220.  
  221. Performs DOS function calls.
  222.  
  223. *** b is a hexadecimal number by default.
  224.  
  225. b is the function number (AH register),
  226. (b) is the sub-function (AL).
  227.  
  228. Example.
  229.  
  230. DOS 4d(0)    ;Same as ASM - MOV AX,4d00h & INT 21h
  231. ENABLE      ENABLE BREAK
  232.  
  233. Enables the break key, makes the BREAK key do what it did before the last
  234. DISABLE BREAK command.
  235. ENABLE    + ENABLE SERIAL [n]
  236.  
  237. Serial Communications.
  238. Enables the COM1 serial port to send interupts for receiving data.
  239. Every time the COM1 port receives a byte it calls interupt 0ch.
  240.  
  241. ENABLE SERIAL firstly initialises the COM1 port to your settings if provided,
  242. eg ENABLE SERIAL 0a3h. See Parameters below.
  243.  
  244. After ENABLE SERIAL, your program just continues to run as normal.
  245. Whenever a character is received, a special handler will automatically put the
  246. byte into a buffer. This buffer is serial_size bytes long and at segment
  247. serial_seg. The byte is put at offset serial_head and then serial_head is
  248. incremented, wrapped around if buffer fills up.
  249.  
  250. The variables serial_seg, serial_head and serial_size are internal FAST
  251. variables. The ENABLE SERIAL interupt will alter serial_head automatically.
  252.  
  253. Example to clarify things.
  254. --------------------------
  255. serial_head=0
  256. serial_size=10000
  257. serial_seg=allocate serial_size/16+1
  258. enable serial 0a3h      ;2400 8N1.
  259.  
  260. forever
  261.     {
  262.     while serial_head<>serial_size
  263.         {
  264.         print dos chr serial_seg[serial_tail]b;
  265.         serial_tail++
  266.         if serial_tail>=serial_size then serial_tail=0
  267.         }
  268.     if key=27 then disable serial:stop
  269.     }
  270.  
  271. Parameters
  272. ----------
  273. Initializes the baud rate, parity, stop-bit, and word length parameters for
  274. the serial port COM1.
  275.  
  276. The optional parameter of ENABLE SERIAL uses the format: bbbppsww
  277.  
  278.             b b b               p p              s              w w
  279.     -----------------------------------------------------------------------
  280.             Baud rate           Parity           Stop bits      Word Length
  281.     Bit:    7 6 5               4 3              2              1 0
  282.             0 0 0    110        0 0  None        0  One         1 0  7 bits
  283.             0 0 1    150        0 1  Odd         1  Two         1 1  8 bits
  284.             0 1 0    300        1 0  None
  285.             0 1 1    600        1 1  Even
  286.             1 0 0  1,200
  287.             1 0 1  2,400
  288.             1 1 0  4,800
  289.             1 1 1  9,600
  290. ENABLE    + ENABLE INTERUPTS
  291.  
  292. Enables all interupts, see DISABLE INTERUPTS.
  293.  
  294. Note ! ENABLE INTERUPTS is the same as assembler STI).
  295. ENDFOR      ENDFOR
  296.  
  297. Drops out of the current FOREVER loop to the line below it.
  298.  
  299. $$$ At present ENDFOR is of no practical use becase it can't be used in an
  300.     IF THEN ELSE statement.
  301. ERROR         ERROR [n]
  302.  
  303. Sets the ERROR variable to value n and the current ON ERROR statement is
  304. executed.
  305.  
  306. If n is not specified then the current ERROR value is used.
  307. ERROR         ERROR MSG filename [,n]
  308.  
  309. Loads the file (created using MAKEMSG or MERR) and then prints the error
  310. message for error n (printing is done using the standard IO - PRINT DOS). If n
  311. is not specified then the ERROR variable is used.
  312.  
  313. Notes ! If there isn't 16k memory free or the file is missing or the error
  314.         number doesn't exist then the following message is printed -
  315.         Error n [DOS=de]  ;de=the DOS error.
  316.       - If ERROR MSG gets its own error it does not recursively call ON ERROR.
  317.  
  318. Example.
  319.  
  320. ON ERROR
  321.     {
  322.     ERROR MSG "\dos.err"
  323.     PRINT DOS "!"
  324.     STOP
  325.     }
  326. EXECUTE $$$ EXECUTE filename,n
  327. FILL         FILL[B] length FROM address WITH n
  328.  
  329. Fills length memory locations starting from address with the word value n
  330. (byte value if FILLB).
  331.  
  332. Length is the count of words (FILL) or bytes (FILLB).
  333. FIND         FIND FIRST filename [,b]
  334.  
  335. Finds the first occurrence of a filename - optional wildcards.
  336. Includes ERROR checking.
  337.  
  338. b is an alternate file attribute for finding files.
  339.     Attributes:    Bit    File Type
  340.                 76543210
  341.                 .......1  Read only
  342.                 ......1.  Hidden
  343.                 .....1..  System
  344.                 ....1...  Volume label
  345.                 ...1....  Directory
  346.                 ..1.....  Archive
  347.  
  348. Combinations: If the attribute (b) is set to 0 (the default) then all read
  349.               only, archive & normal files are found. If the directory, hidden
  350.               or system bits are set then they are found aswell as normal files.
  351.  
  352.  
  353. The information for the file found is at address:
  354.               DTA SEGMENT|DTA OFFSET + 15h (1)  = File attribute.
  355.                                      + 16h (2)  = Time stamp.
  356.                                      + 18h (2)  = Date stamp.
  357.                                      + 1Ah (4)  = File size in bytes.
  358.                                      + 1Eh (13) = File name,0 (ASCIIZ).
  359.  
  360. Note ! FIND NEXT is used to find all subsequent files in the directory.
  361. FIND         FIND NEXT
  362.  
  363. As for FIND FIRST but finds all subsequent files.
  364. FIND NEXT must be used for every file.
  365. Includes ERROR checking.
  366.  
  367. Note ! Error 18 means no more files,
  368.  
  369. Example.
  370.  
  371. #ERRORS OFF
  372. FIND FIRST "*.*"   ;Find the first, will abort
  373. GOTO entry
  374. FOREVER
  375.     {
  376.     FIND NEXT              ;Next file.
  377. #ERRORS ON
  378.     entry:
  379.     IF ERROR=18 THEN GOTO finished
  380.     IF ERROR THEN ERROR    ;Handler genuine errors.
  381.     ;Process File.
  382.     }
  383. finished:                  ;Complete.
  384. FLASH         FLASH b
  385.  
  386. Determines whether text PRINTed will be flashing or not.
  387. Sets the 'f' bit in the COLOUR variable.
  388. FNAME         FNAME string
  389.  
  390. FNAME (FileNAME) is the same as DATAB string,0 but is generally more
  391. convienient. Appending the 0 to the name makes it an ASCIIZ string for file
  392. commands. Filenames defined using FNAME are easily used.
  393.  
  394. Example.
  395.  
  396. OPEN #2,output_file
  397. ...
  398. output_file:
  399. FNAME 'file.lst'
  400. FOR         FOR var=n TO last [STEP step]
  401.  
  402. The FOR command 1) sets var=n,
  403.                 2) calculates the last value for the variable,
  404.                 3) executes the instructions until a NEXT is encountered,
  405.                 4) Adds the increment to var,
  406.                 5) If var <= last then go back to step 3.
  407.  
  408. Note ! FOR-NEXT loops can be nested to about 20 levels maximum.
  409. FOREVER     FOREVER statement
  410.  
  411. Executes the statement forever or until exited. Common ways to exit a forever
  412. are: GOTO, BREAK & ENDFOR.
  413.  
  414. GOTOs are valid in and out of FOREVER statements.
  415. FREE       + FREE MEMORY
  416.  
  417. Frees memory in excess of what the FAST program requires, leaving the minimum
  418. amount of memory for code, variables, windows & stack.
  419.  
  420. Note ! FREE MEMORY is done automatically at program startup (only here for old
  421.        code compatibility, not needed now).
  422. FREE       + FREE ALL MEMORY
  423.  
  424. Fress all memory used by the FAST program including the code.
  425.  
  426. FREE MEMORY is provied for programs which may remain memory resident for some
  427. time but terminate at some stage.
  428.  
  429. Notes ! TERMINATE and STOP will automatically free all memory.
  430. FUNCTION    FUNCTION funcname [(var [,...])] statement
  431.  
  432. Defines a function with an optional number of parameters.
  433. All functions can be called from within themselves but variables are NOT
  434. remembered.
  435.  
  436. When a function is used any parameters missing from the list have an undefined
  437. value.
  438.  
  439. Example.
  440.  
  441. FUNCTION rnd_range(max)
  442.     {
  443.     RETURN RND MOD (max+1)
  444.     }
  445. PRINT rnd_range(200)
  446. GOSUB         GOSUB label
  447.  
  448. Program jumps to a subroutine - when a RETURN is reached the program continues
  449. from the command after GOSUB.
  450.  
  451. Note ! If using PUSH or POP then keep the STACK intact.
  452. GOTO         GOTO label
  453.  
  454. Program jumps to the label.
  455. HALT       + HALT
  456.  
  457. Halts the CPU using the assembler HALT instruction, used for timing and
  458. synchronisation, or as a delay until the next interupt.
  459. HANDLE    + HANDLE #b,n
  460.  
  461. Overrides the file handle for any FAST files from 1 to 12.
  462. N could be the handle of a standard DOS output handle. Eg handles from 0 to 4.
  463.  
  464. Gets your hands on the DOS technical reference for some very useful info on
  465. files and handles, or someone who has read it.
  466.  
  467. In brief
  468. --------
  469. A handle is a number which represents a file that has been OPENed or CREATEd.
  470. All FASTs file comamnds & functions use #1 to #12 to represent a file.
  471. In reality #1, #2 ... #12 are just variables which contain the handle number
  472. of open files.
  473.  
  474. For example.
  475.  
  476. OPEN #1,myfile  ;Sets #1=the next availble DOS file handle number, typically 5.
  477.  
  478. DOS has 5 default handles which can also be used for input and output but they
  479. don't represent files. They are:
  480.  
  481.             0 Standard input device, input can be redirected.
  482.             1 Standard output device, output can be redirected.
  483.             2 Standard error device, cannot be redirected.
  484.             3 Standard auxiliary device.
  485.             4 Standard printer device.
  486.  
  487. For example to write bytes to the standard auxiliary device using FAST commands
  488. such as WRITE #1,50 FROM address could be done, try...
  489.  
  490.             HANDLE #1,3     ;Sets #1 (a variable containing a file handle) to 3.
  491.  
  492.             WRITE #1,50 FROM address    ;Write bytes.
  493.  
  494. Note ! The five standard DOS handles (0-4) don't have to be opened before use.
  495. HGRAPHICS   HGRAPHICS
  496.  
  497. Turns a hercules (or compatible) graphics card into graphics mode, Screen
  498. resolution of 720 rows and 348 columns.
  499. The SCREEN command cannot change mode on an HGA or compatible card.
  500. To display SPRITEs, PLOT dots or draw LINEs then the MODE command must be used
  501. as MODE 720,mode for setting which mode is being used.
  502.  
  503. Example.
  504.  
  505. HGRAPHICS
  506. MODE 720,AND
  507.  
  508. Note ! HTEXT puts the HGA card back into text mode.
  509. HTEXT         HTEXT
  510.  
  511. Puts the hercules (or compatible) graphics card back into text mode, after
  512. using HGRAPHICS.
  513. IF         IF n THEN statement [:...] [ELSE statement [:...]]
  514.  
  515. IF the value for n is true (not 0) then the first statement is executed. If an
  516. ELSE statement is provided and the value is false then the second statement is
  517. executed.
  518. IFs can be nested to a maximum of approximately 30 levels.
  519.  
  520. Example.
  521.  
  522. IF score>75 THEN PRINT "Excellent"
  523.     ELSE IF score>50 THEN PRINT "Pass" ELSE PRINT "Fail"
  524. INK         INK n
  525.  
  526. Sets the ink (text) colour used by the PRINT commands.
  527. Sets the 'iii' bits in the COLOUR variable.
  528. INLINE    + INLINE b [,...]
  529.  
  530. All values b are assumed to be for a machine code subroutine.
  531. Use the DOS utility debug to write a subroutine then put the machine code in
  532. the INLINE command.
  533.  
  534. Note ! INLINE is exactly the same as DATAB, INLINE should be used for any
  535.        machine code to show that it is for running (unlike data).
  536.  
  537. $$$ FAST will soon be able to compile SOFA compatible assembly code and
  538.     #INCLUDE SOFA source files.
  539. INPUTS      INPUTS n
  540.  
  541. Gets a string input from the keyboard and stores it as a STRING at address n.
  542. The string format is described by the STRING command.
  543.  
  544. There is an extended input option provided in the EXTINPUT.FI file, include
  545. this into your source files then change the INPUTS commands - read the file for
  546. help on using the new functions.
  547. INT       + INT b
  548.  
  549. Calls the specified software interupt.
  550. *** b is a hexadecimal number by default.
  551.  
  552. There are 256 interupt vectors, to set or read their values use the SETINT
  553. command and the GETINT function.
  554. To find which interupts do what - read the DOS technical reference or any
  555. half-way decent assembly language book for the PC Compatible.
  556.  
  557. Note ! b is a hexadecimal number, same as for the DOS command.
  558.  
  559. Example.
  560.  
  561. INT 17  ;(means 17 hexadecimal or 23 decimal).
  562. IRET       + IRET
  563.  
  564. Performs a return from interupt (same as assembler IRET).
  565. JUMP       + JUMP address
  566.  
  567. Like GOTO but can goto any segment|offset address within memory.
  568. Possible uses - Jumping to a program overlay.
  569.  
  570. Example of program overlay.
  571.  
  572. over_seg=ALLOCATE 2048          ;2048 paragraphs = 32k
  573. LOAD "over.com",over_seg|100h   ;Load overlay.
  574. JUMP over_seg|100h              ;Jump to start of the program.
  575.                                 ;Note ! 100h is used as the start.
  576. LET         [LET] var assignment n
  577.  
  578. Assigns value n to the variable.
  579. See the VARS entries for possible ways of assigning variables a value.
  580.  
  581. Example.
  582.  
  583. LET a=20       ;same as a=20
  584. score+=20
  585. x++
  586. address=x*2+y*160
  587. LINE     $$$ LINE x,y TO x,y
  588.  
  589. Draws a line on the graphics screen using the current MODE setting.
  590. The line goes from the first x,y coordinate to the second x,y.
  591. The graphics screen should be set with both SCREEN and MODE commands. Eg if
  592. using a 320*200 graphics screen then MODE should be set using
  593. MODE 320,[AND] [OR] [XOR] : SCREEN 4
  594.  
  595. The 'iii' bits of COLOUR are used to determine the colour of the dot on the
  596. screen. 2 colours use 1 bit, 4 colours use 2 bits.
  597. LOAD         LOAD filename,address [,length]
  598.  
  599. Loads the file into memory at address. Maximum load is 64K bytes.
  600. Includes ERROR checking.
  601.  
  602. Three steps are done by the LOAD command:
  603.     1) OPEN filename
  604.     2) READ bytes to address, default is load up to 64k but can be over-ridden.
  605.     3) CLOSE file.
  606. LOCATE      LOCATE y,x
  607.  
  608. Sets the LOCPOS (PRINT location) to row y, column x.
  609. Same as saying LOCPOS = y*160 + x*2 (but LOCATE is more efficient).
  610. LOCTOCUR    LOCTOCUR
  611.  
  612. LOCATE TO CURSOR sets the CURSOR postion to the same as the LOCATE position.
  613. The flashing CURSOR is the next position for PRINT DOS commands to print at
  614. whereas the LOCATE or LOCPOS position is for the PRINT commands.
  615.  
  616. LOCTOCUR is the same as: CURSOR LOCPOS/160,(LOCPOS MOD 160)/2
  617. MAKE         MAKE DIR pathname
  618.  
  619. Makes the specified directory, includes ERROR checking.
  620. MODE         MODE r,m
  621.  
  622. Tells the FAST graphics library which screen mode is being used.
  623. The MODE command should always be used in conjunction with the SCREEN command
  624. before using graphics commands such as PLOT, LINE, SPRITE & POINT.
  625.  
  626. r = screen width in pixels; 320, 640 & 720 are currently supported.
  627. m = printing mode for PLOT, LINE & SPRITE; either AND, OR or XOR.
  628.  
  629. AND, OR & XOR in animation terms:
  630.  
  631.     AND will clear the background and print itself (dot or sprite) on screen.
  632.     OR  will merge itself with the current image on the screen.
  633.     XOR will inverse itself with the current image.
  634.  
  635. AND would be used when the background can be wiped out.
  636. OR  is used for putting images on the screen over the top of each other,
  637.     generally not for animation.
  638. XOR is used for putting images over anything then removing them (by printing
  639.     in the same place, therefore removing itself) and printing it elsewhere.
  640. MODIFY      MODIFY segment TO n
  641.  
  642. Modifies the length in paragraphs of an ALLOCATEd segment of memory, includes
  643. ERROR checking.
  644. A block of memory can almost always be made smaller.
  645. Normally a segment can only be enlarged if no segments have been allocated
  646. since the one being modified.
  647. MOVE         MOVE[B] length FROM address TO address
  648.  
  649. Moves the number of words (or bytes if MOVEB) from the first address to the
  650. second address. The maximum number of words moveable at once is 32768, the
  651. maximum number of bytes is 65535.
  652. If length=0 then nothing is done.
  653.  
  654. Note ! MOVE will never over-ride memory, special checks have been implemented
  655.        and so MOVE automatically inserts or deletes gaps where required.
  656.  
  657.        In assembler terms, MOVE knows whether to set CLD or STD and whether or
  658.        not to add the length to the base registers.
  659. NEXT         NEXT var [,...]
  660.  
  661. Associated with a FOR loop, the STEP is added to the variable, if the variable
  662. is <= the last value then the statements between the FOR-NEXT are repeated.
  663. NOISE         NOISE OFF
  664.  
  665. Turns the sound off (speaker frequency = 0).
  666. NOISE         NOISE duration,n
  667.  
  668. Produces a noise for duration loops at frequency n. NOISE's duration represents
  669. approximately 1/20000th of a second (for 4.77MHz PC). Therefore NOISE 20,10 is
  670. 1/1000th of a second. The duration of a sound command will vary greatly,
  671. depending on whether you run your program on the 4.77MHz PC or the 33MHz 80486.
  672.  
  673. A frequency can be converted to n using: n = 1,331,000 / freq
  674.  
  675. NOISE does not turn the speaker off when it has finished, so more noise can be
  676. made without interference, NOISE OFF turns the sound off when finsihed.
  677. To set the speaker on but do something else while the noise is on then use
  678. either the SOUND command with a long duration or NOSIE 1,n (1 means short
  679. delay).
  680.  
  681. Note ! While NOISE is being executed nothing else will be done.
  682. ON         ON TRACE statement
  683.  
  684. Every line which is compiled while the ON TRACE statement is compiled will
  685. call the current ON TRACE statement.
  686.  
  687. The ON TRACE statement will only be run if the program is traced using the
  688. FASTT command, 'FASTT filename'.
  689.  
  690. To find all information on tracing search the word 'TRACE' AND 'TRACING'.
  691.  
  692. Note ! The #ON TRACE flag should be OFF and not changed while compiling the
  693.        ON TRACE statement.
  694. ON         ON ERROR statement
  695.  
  696. When the ERROR command is used it calls this user-definable statement, the
  697. error number is stored in the ERROR variable.
  698. The address of where the error occurred is on the stack.
  699. If no ON ERROR statement is defined then the default is used.
  700.  
  701. Example.
  702.  
  703. ON ERROR
  704.     {
  705.     POP address
  706.     OPEN WINDOW severe
  707.     CURSOR 18,50
  708.     ERROR MSG "\dos.err"
  709.     PRINTH BIOS ", at address: ";address
  710.     WAIT FOR KEY=27
  711.     CLOSE WINDOW
  712.     STOP
  713.     }
  714. ON         ON BREAK statement
  715.  
  716. The ON BREAK interupt is set so that when the break key is detected, control
  717. transfers to the new ON BREAK statement.
  718. The ON BREAK statement automatically returns to the place were the break was
  719. detected using an assembler IRET instruction.
  720.  
  721. Example.
  722.  
  723. ON BREAK beep
  724. ON         ON DEBUG statement
  725.  
  726. Any lines that have the #DEBUG flag on will execute the current ON DEBUG
  727. statement while executing.
  728.  
  729. The ON DEBUG statement could be used to display variables in a window or
  730. allow checking of special key presses etc.
  731.  
  732. If no ON DEBUG statement is defined then the default statement tests the break
  733. key.
  734.  
  735. Note ! The #ON DEBUG flag should be OFF and not changed while compiling the
  736.        ON DEBUG statement.
  737. ON       + ON INT b statement
  738.  
  739. Sets one of FASTs 12 interupts to perform a statement. b ranges from 1 to 12.
  740. Each interupt occurs 18.2 times every second.
  741.  
  742. FASTs 12 interupts are seperate from the computers interupts (using the FAST
  743. INT, GETINT and SETINT commands) and different from DOS functions (using DOS).
  744. FASTs interupts are all attached to the computers interupt 08h which is the
  745. normal timer tick interupt.
  746.  
  747. The command STOP INT b will stop an interupt.
  748.  
  749. Note ! DOS functions and FAST commands which include error checking must not be
  750.        used inside ON INT statements becase they effect DOS.
  751.        To perform DOS functions during interupts the computer must not be
  752.        currently running any other DOS function, check this with the INDOS flag
  753.        and the ON IDLE interupt.
  754.  
  755. All information on TSRs can be located by doing a search on TSR.
  756. ON       + ON IDLE statement
  757.  
  758. The idle interupt is intercepted by the ON IDLE comamnd (INT 28h).
  759. DOS calls interupt 28h whenever it is waiting for input from the keyboard.
  760.  
  761. If you want to call the IDLE interupt within your own program simply use the
  762. command 'INT 28'.
  763.  
  764. STOP IDLE restores the idle interupt to its state before the ON IDLE was used.
  765.  
  766. ON IDLE can be used to detect when DOS is not doing anything (useful for TSR
  767. programs).
  768. ON     $$$ ON CRITICAL statement
  769. ON     $$$ ON KEY b statement
  770.  
  771. When the specified key is read from the keyboard the statement is executed.
  772. b is a value within the range 32-127.
  773. ON     $$$ ON SCAN b statement
  774.  
  775. Same as ON KEY but SCAN codes are used to determine which key has been pressed
  776. (run sample program HEXD for scan values).
  777. When the specified key is read from the keyboard the statement is executed.
  778. b is a value within the range 0-132.
  779. OPEN         OPEN #n,filename [,reclen]
  780.  
  781. Opens the file as being file #n and it is ready for input & output, includes
  782. ERROR checking.
  783.  
  784. An error occurs if the file doesn't exist (error 2), the CREATE command can be
  785. used to delete an existing file (if it exists) and start with a 0 length file.
  786.  
  787. See also: CLOSE, SEEK, RECLEN, READ & WRITE.
  788. OPEN         OPEN WINDOW n
  789.  
  790. Opens a window on the screen.
  791. Windows can only be used in 80 column colour text mode, this is the default for
  792. almost all applications so this should be a small limitation.
  793.  
  794. If OPEN WINDOW gets an error then this is handled by normal error checking.
  795. Error 4 occurs if no more windows can be opened - No more handles available.
  796. Error 8 occurs if no more window memory - Insufficient Memory, this can be
  797. fixed by increasing the size of #WINDOW MEMORY, it defaults to 1500 bytes.
  798.  
  799. n is an address which points to a description of the window.
  800. The memory at n is structured as:
  801.     Address n = mode, options, x1, y1, x2, y2, colour, [text...,] eof.
  802.  
  803. 1) mode is 0, 1 or 2. Mode 0 prints the window with a boundary, no top line is
  804.    used. Mode 1 prints a top line for the windows heading and are used for
  805.    selecting items (ie: the highlighted bar will appear in the window).
  806.    Items can be selected either using ENTER or pressing either of the first two
  807.    letters of the option (meaning the lettersa at column x1+1 and x1+2).
  808.    Mode 2 is the same as mode 1 except items must be selected using ENTER.
  809.  
  810. 2) options is the number of selectable options the window has, only used by
  811.    mode 1 & 2.
  812.  
  813. 3) x1,y1 is the top left coordinate for the window.
  814.  
  815. 4) x2,y2 is the bottom right coordinate for the window.
  816.  
  817. 5) colour is the colour used to clear the window. See the COLOUR command for a
  818.    description of the colours.
  819.  
  820. 6) text is where you can put any printable characters inside the window.
  821.    Two commands can be within the text area, decimal 20,b sets the new colour
  822.    for text printed, 22,x,y sets a new printing position, its origin is at
  823.    x1,y1 (0,0).
  824.  
  825. 7) eof is used to signal the end of the window.
  826.    The eof (end of file) character is 26 decimal (1A hexadecimal).
  827.  
  828. Typically OPEN WINDOW will only be used to open mode 0 windows.
  829. The MENU function should be used for mode 1 & 2 windows.
  830.  
  831. The CLOSE WINDOW command closes only the most recently opened window, last in
  832. first out.
  833.  
  834. Example.
  835.  
  836. #ERRORS ON                  ;Trap any errors.
  837. OPEN WINDOW win_status      ;Open a typical status window.
  838. ...                         ;Print details inside window.
  839. STOP
  840.  
  841. win_status:
  842. datab 0,0,40,14,79,24,15       ;mode, options, x1,y1, x2,y2, colour
  843. datab 22,1,4,'System Status'   ;text...
  844. datab 26                       ;eof.
  845.  
  846. Note ! The PRINT command does not use the current windows origin for printing,
  847.        the whole screen is used as always.
  848.      ! The maximum number of windows open is 20.
  849. OUT         OUT n,b
  850.  
  851. Sends the byte value b to the port n.
  852. FAST uses the assembler OUT command for OUTput.
  853. PAGE         PAGE b
  854.  
  855. Sets the current screen page, see the SCREEN command for the number of pages in
  856. each mode. Typically i n 80*25 colour on CGA there are 4 pages.
  857.  
  858. 0 is the first page.
  859. PALETTE     PALETTE b
  860.  
  861. Sets the colour palette for the graphics on the screen.
  862. At the moment this command only effects CGA SCREEN mode 4 (320*200).
  863. PAPER         PAPER n
  864.  
  865. Sets the paper (background) colour used by the PRINT commands.
  866. Sets the 'ppp' bits in the COLOUR variable.
  867. PLOT         PLOT x,y
  868.  
  869. Plots one dot (pixel) on the screen which must be a graphics screen.
  870. The graphics screen should be set with both SCREEN and MODE commands. Eg if
  871. using a 320*200 graphics screen then MODE should be set using
  872. MODE 320,AND/OR/XOR & SCREEN 4.
  873.  
  874. The low bits of COLOUR are used to determine the colour of the dot on the
  875. screen. 2 colours use 1 bit, 4 colours use 2 bits.
  876. POKE         POKE[B] address,n
  877.  
  878. The word (or byte, POKEB) value is put into memory at the specified address.
  879. The low 8 bits of the word value n are stored at address and the high 8 bits
  880. are stored at address+1.
  881.  
  882. PEEK is the function to retrieve values from memory.
  883. POP       + POP var [,...]
  884.  
  885. Pops the last pushed value from the stack.
  886. To use this function a good knowledge of a stack and SP registers is needed.
  887. POPALL    + POPALL
  888.  
  889. Pops all of the computers registers from the stack.
  890.  
  891. Note ! Only to be used in conjunction with PUSHALL.
  892.        Registers are POPed as: DS ES DI SI BP DX CX BX AX
  893. PRINT         [S][L]PRINT[H][B][HB] [DOS] n , cr lf ff "text" tab chr ;
  894.             [S] as in SPRINT is for ultra fast screen printing.
  895.             [L] as in LPRINT is for printing on the printer.
  896.             [H] as in PRINTH is for printing n values in HEX (hhhh).
  897.             [B] as in PRINTB is for printing n as byte values (ddd).
  898.             [HB] as in PRINTHB is for printing n as byte values in HEX (hh).
  899.             [DOS] as in PRINT DOS is for printing through the standard DOS IO.
  900.             [BIOS] as in PRINT BIOS, same as PRINT DOS (left for compatibility
  901.                 with older versions of FAST).
  902.  
  903. Just PRINT is for quick screen printing, n is printed using decimal.
  904.  
  905. Print options:
  906.  
  907. ,   For PRINT and SPRINT to tab to the next column assuming two 16 character
  908.     columns.
  909.  
  910. cr  Used by LPRINT and PRINT DOS to start printing from the start of the same
  911.     line (carriage return).
  912.     Used by SPRINT and PRINT to start printing from beginning of the next line.
  913.  
  914. lf  Used by LPRINT and PRINT DOS to start printing from the same column but on
  915.     the next line down (line feed).
  916.  
  917. ff  Used by LPRINT to start on a new page (form feed).
  918.     "text" Any message to print. To actually print the double quotes type ""
  919.     within the message.
  920.  
  921. tab Used by PRINT, LPRINT & PRINT DOS to tab to the next 8 columns.
  922.  
  923. chr Used by all to print any character eg: PRINT chr 254
  924.  
  925. Note ! Comments (;) are not allowed after the print commands because ; is
  926.        treated as a seperator.
  927. PROC         PROC[EDURE] procname [(var [,...])] statement
  928. PROCEDURE
  929.  
  930. A procedure is the same as a FUNCTION but the RETURN value is ignored.
  931. See FUNCTION for a description.
  932.  
  933. Note ! Both functions and procedures can be used as commands or functions.
  934. PSP       + PSP n
  935.  
  936. Sets the current PSP (Program Segment Prefix) to point to the segment n.
  937.  
  938. The default PSP for any FAST program is the same as the code segment because
  939. FAST uses COM files which have only one segment.
  940.  
  941. Each program run under DOS has a PSP, when running COM programs the PSP
  942. information is stored within the first 128 bytes of the segment.
  943.  
  944. The function PSP returns the current PSP segment.
  945.  
  946. The PSP command and function should be used within TSR (Terminate and Stay
  947. Resident programs).
  948. PUSH       + PUSH n [,...]
  949.  
  950. Pushes the word value onto the stack. POP retrieves the items off the stack.
  951. Knowledge of the STACK is essential before using this command because using it
  952. incorrectly will disrupt some FAST commands.
  953. PUSHALL   + PUSHALL
  954.  
  955. Saves all registers on the stack to be retrieved later using the POPALL command.
  956.  
  957. Registers are PUSHed as: AX BX CX DX BP SI DI ES DS
  958. RANDOMIZE   RANDOMIZE n
  959.  
  960. Sets the RND seed (starting point) to n.
  961.  
  962. If the seed is set to the same number then the same sequence of "random"
  963. numbers will be generated by RND.
  964. READ         READ[B] v [,...]
  965.  
  966. Reads a value from the current RESTORE address and puts it into the variable
  967. and increments the RESTORE address by 2 for words or 1 for bytes.
  968.  
  969. See RESTORE for an example.
  970. RECLEN      RECLEN #n,n
  971.  
  972. Changes the record length of any OPEN file to a new value of n.
  973. This new record length is used only by SEEK.
  974. REG       + REG REGISTER=n [,...]
  975.  
  976. Sets any register from the following set with the value n.
  977. REG can be any of 'AX BX CX DX SI DI BP SP DS ES CS'
  978.  
  979. Note ! Some expressions use many registers to get the value n so if n is not a
  980.        constant or a variable then use this syntax:
  981.             var_dx=PEEK segment|offset  ;or var_dx=any expression.
  982.             REG DI=10,DX=var_dx,AX=20
  983. REMOVE      REMOVE DIR pathname
  984.  
  985. Removes the specified directory, includes ERROR checking.
  986. RENAME      RENAME filename TO filename
  987.  
  988. Renames the first file to the second file, includes ERROR checking.
  989. REPEAT      REPEAT n statement [:...]
  990.  
  991. Repeats the statement n times. A GOTO within the statement can be used to exit
  992. the REPEAT before it finishes.
  993. REPEATs can be nested to about 50 levels.
  994.  
  995. Example.
  996.  
  997. REPEAT 200 freq+=50:REPEAT 5  NOISE 2,freq:freq+=4
  998.            -----------------  ---------------------
  999.            Repeats 200 times  Repeats 5 times * 200
  1000. RESET       + RESET INTERUPTS
  1001.  
  1002. Resets the interupts INT 08 and INT 09 if they were set.
  1003. After compiling FAST says which interupts will be used if any, those ones will
  1004. be reset.
  1005.  
  1006. Note ! If interupts are running while a FAST program is running then it must
  1007.        always return to DOS when finished with either TERMINATE or STOP.
  1008.        This applies only to INT 08 & INT 09, which may be utilised by FAST
  1009.        automatically.
  1010. RESTORE     RESTORE address
  1011.  
  1012. Sets the READ pointer to the address.
  1013. The next READ command will retrieve data from the new address.
  1014.  
  1015. Note ! The READ command reads words/bytes from memory whereas the READ function
  1016.        reads bytes from a file or device.
  1017.  
  1018. Example.
  1019.  
  1020. PROC draw_pic(pic_address)
  1021. RESTORE pic_address
  1022. lx=-1
  1023.  
  1024. loop:
  1025. READ x,y
  1026. IF x=-1 THEN RETURN
  1027. IF lx>0 THEN LINE lx,ly TO x,y
  1028. lx=x:ly=y
  1029. GOTO loop
  1030. RETF       + RETF
  1031.  
  1032. This is the same the assembly RETF instruction.
  1033. RETURN      RETURN [n]
  1034.  
  1035. Return from a function optionally returning a value.
  1036.  
  1037. Note ! If the stack has been used with PUSH or POP then it should be how it was
  1038.        originally before the RETURN is done.
  1039. SAVE         SAVE filename,address,length
  1040.  
  1041. Writes a file to disk, includes ERROR checking.
  1042.  
  1043. Three steps are done automatically by SAVE:
  1044.     1) CREATE filename.
  1045.     2) WRITE length bytes from address in memory to disk.
  1046.     3) CLOSE file.
  1047.  
  1048. The maximum length is 65535 bytes.
  1049. SCREEN      SCREEN b
  1050.  
  1051. Sets the screen display to any type, including support for HGA, MDA, CGA, EGA,
  1052. VGA and any others which use the BIOS INT 10h for setting video modes.
  1053. MODE should be used in conjunction with SCREEN to set graphics modes.
  1054.  
  1055.     b    Type   Resolution   Adapter(s)     Colours      VIDEO
  1056.     ------------------------------------------------------------
  1057.     0     T      40 x 25     All but MDA    16 gray       B800
  1058.     1     T      40 x 25     All but MDA  16 fore/8 back  B800
  1059.     2     T      80 x 25     All but MDA    16 gray       B800
  1060.     3     T      80 x 25     All but MDA  16 fore/8 back  B800
  1061.     4     G     320 x 200    All but MDA        4         B800
  1062.     5     G     320 x 200    All but MDA      4 gray      B800
  1063.     6     G     640 x 200    All but MDA        2         B800
  1064.     7     T      80 x 25     HGA,MDA,EGA       b/w        B000
  1065.     8     G     160 x 200       PCjr           16         B000
  1066.     9     G     320 x 200       PCjr           16         B000
  1067.    10     G     640 x 200       PCjr            4         B000
  1068.    11     R  (internal to EGA)
  1069.    12     R  (internal to EGA)
  1070.    13     G     320 x 200       EGA            16         A000
  1071.    14     G     640 x 200       EGA            16         A000
  1072.    15     G     640 x 350       EGA            b/w        A000
  1073.    16     G     640 x 350       EGA            16         A000
  1074. SCROLL      SCROLL [DOWN] x,y,x,y,b
  1075.  
  1076. Scrolls the specified window b lines.
  1077. The first x,y represents the upper left corner, therefore the second x,y
  1078. represents the bottom right.
  1079.  
  1080. If b is 0 then the window is cleared.
  1081. The COLOUR variable contains the value used for the blank line.
  1082.  
  1083. Example.
  1084.  
  1085. SCROLL 0,0,24,79,1      ;Scroll the entire screen up one line.
  1086. SEEK         SEEK #n,record
  1087.  
  1088. Moves the file pointer to the nth record, includes ERROR checking.
  1089. The offset within the file will = record * reclen.
  1090.  
  1091. Record can be a 32 bit expression or variable.
  1092.  
  1093. By default the record length if 1 so SEEK #1,1000 will seek to the 1000th byte.
  1094.  
  1095. SETINT    + SETINT b TO address
  1096.  
  1097. The interupt vector is set to the given address.
  1098.  
  1099. *** b is a hexadecimal number by default, see the DOS and INT commands.
  1100.  
  1101. GETINT is a function which returns the address of an interupt vector.
  1102. SHAPE         SHAPE "????????????????"
  1103.  
  1104. Defines a shape to be used by the SPRITE command.
  1105. Sprites can be any width in multiples of 16 pixels.
  1106.  
  1107. When defining sprites for MODE 640 or MODE 720 then each character within the
  1108. SHAPE string represents one pixel, MODE 320 uses two characters - 4 colours.
  1109.  
  1110. Note ! The asterisk (*) is used to represent 1, space is for 0.
  1111.  
  1112. Example.
  1113.  
  1114. DATAB 1,8   ;This sprite will be 1*16 pixels wide and 8 pixels high.
  1115. SHAPE "                "
  1116. SHAPE "  ************  "
  1117. SHAPE "  ***      ***  "
  1118. SHAPE "  **        **  "
  1119. SHAPE "   ***    ***   "
  1120. SHAPE "     ******     "
  1121. SHAPE "       **       "
  1122. SHAPE "                "
  1123. SHELL     $$$ SHELL string
  1124.  
  1125. Performs the DOS command through the command interpreter COMMAND.COM, includes
  1126. ERROR checking.
  1127. SOUND         SOUND duration,n
  1128.  
  1129. Sets the speaker to produce a noise at frequency n. The duration of the noise
  1130. will be for duration interupts.
  1131. By default the computers timer interupt is activated 18.2 times per second.
  1132. This can be changed if the time is not required.
  1133. Setting the clock frequency with CLOCKS is allowed, but CLOCKS 0 must be used
  1134. to reset to 18.2 interupts per second when your program finishes.
  1135.  
  1136. The variable DURATION can be used to alter or test how many interupts remain
  1137. before the sound finishes.
  1138. A frequency can be converted to n using: n = 1,331,000 / freq
  1139.  
  1140. NOISE OFF can be used to turn the sound off before DURATION=0.
  1141.  
  1142. Note ! While the sound is being made, the program continues; INT 08 is used in
  1143.        the background to automatically detect the end of the sound and turn
  1144.        the speaker off.
  1145. SPACE         SPACE n
  1146.  
  1147. Defines a work area of n bytes in length. n must be a constant.
  1148. All bytes are set by default to 0.
  1149.  
  1150. SPACE is identical to saying DATAB 0, ... n times.
  1151.  
  1152. If defining space for a variable of say 200 bytes, it is preferable to use
  1153. the declaration as var ? 200.
  1154.  
  1155. Example.
  1156.  
  1157. table: space 200    ;Puts 200 bytes in memory. Same rules apply to SPACE as
  1158.                     ;to DATA, should be used at end of program.
  1159.  
  1160. table ? 200         ;Can be used anywhere. Same as above but won't add 200
  1161.                     ;bytes to the file length.
  1162. SPPOS       + SPPOS
  1163.  
  1164. Sets the register SI for SPRINTing. Register SI is set equal to the variable
  1165. LOCPOS which represents the position for the PRINT command. Register SI is
  1166. destroyed in certain instances so SPPOS should be used just before using SPRINT.
  1167.  
  1168.  
  1169. Example.
  1170.  
  1171. SPPOS
  1172. m=start_file
  1173. WHILE PEEKB m SPRINT CHR PEEKB m;:m++
  1174.  
  1175. There are 2 other VERY FAST printing routines for printing lines of text
  1176. or messages: PRINTS & PRINTM (PRINTM is a function).
  1177.  
  1178. PRINTM is the prefered choice, it prints a line, automatically scanning for
  1179. a variety of end characters, including end of file. Tabs are automatically
  1180. expanded and the colour can be transparent or changed.
  1181. SPRITE      SPRITE x,y,address
  1182.  
  1183. Puts a sprite (bit image graphic) on the screen which must be a graphics
  1184. screen. The graphics screen should be set with both SCREEN and MODE commands.
  1185. Eg if using a 640*200 graphics screen then MODE should be set using
  1186. MODE 640,AND/OR/XOR & SCREEN 6.
  1187.  
  1188. A sprite is defined by the contents of the bytes at 'address'.
  1189.     address + 0 = width of sprite (in words) 1=16 bits/2=32 bits etc.
  1190.     address + 1 = heigth of sprite (in pixel rows).
  1191.     address + 2 = shape data (width*2*height bytes).
  1192.  
  1193. Example of a sprite 16 pixels across and 5 pixels high.
  1194.  
  1195. SCREEN 6:MODE 640,AND
  1196. SPRITE x,y,sprite_address
  1197. STOP
  1198.  
  1199. sprite_address:
  1200. DATAB 1,5
  1201. SHAPE "       **       "
  1202. SHAPE "   **********   "
  1203. SHAPE "****************"
  1204. SHAPE "   **********   "
  1205. SHAPE "       **       "
  1206. STACK       + STACK=n
  1207.  
  1208. Sets the stack pointer (register SP) to the value n.
  1209. Should only be used if full control of the stack is guaranteed, remembering
  1210. that interupts use the stack (DISABLE INTERUPTS if setting the stack to point
  1211. to a volatile memory area).
  1212. STOP         STOP INT b
  1213.  
  1214. Stops interupt b from doing anything, ie: disables the current ON INT b
  1215. statement.
  1216.  
  1217. Note ! b ranges from 1 to 8.
  1218.  
  1219. FASTs 8 interupts are seperate from the computers interupts (using the FAST
  1220. INT, GETINT and SETINT commands) and different from DOS functions (using DOS).
  1221. FASTs 8 interupts are all attached to the computers interupt 08h which is the
  1222. normal timer tick interupt.
  1223. STOP         STOP DEBUG
  1224.  
  1225. Stops the current ON DEBUG statement, ie: nothing is done during each debugged
  1226. line at all, until the next ON DEBUG command.
  1227. STOP         STOP RESIDENT
  1228.  
  1229. The program returns to DOS and remains in memory. All files that are OPEN
  1230. are left open and all memory ALLOCATEd is left allocated.
  1231.  
  1232. This command is for TSR (Terminate and Stay Resident) programs.
  1233.  
  1234. The other FAST commands to use when writing TSR programs are normally
  1235. PSP, INDOS & ON IDLE.
  1236.  
  1237. For an example of a TSR program see the PU.F source file.
  1238.  
  1239. Note ! All interupts set using ON INT, ON KEY, ON SCAN & ON IDLE remain in use
  1240.        after STOP RESIDENT but interupts set using ON BREAK & ON CRITICAL are
  1241.        restored to their original values.
  1242. STOP         STOP IDLE
  1243.  
  1244. Stops the current ON IDLE statement, ie: Now every IDLE interupt does what it
  1245. used to; typically DOS does nothing.
  1246. STOP         STOP TRACE
  1247.  
  1248. Stops the current ON TRACE statement, ie: nothing is done during each traced
  1249. line other than the ordinary, which is to display the source code being
  1250. executed if run using FASTT.
  1251. STOP         STOP
  1252.  
  1253. Same as TERMINATE.
  1254. STOP     $$$ STOP SCAN b
  1255.  
  1256. STOP     $$$ STOP CRITICAL
  1257. STOP     $$$ STOP KEY b
  1258. STRING      STRING b
  1259.  
  1260. Defines an area in memory suitable for the INPUTS command.
  1261. The memory is defined as:
  1262.     address + 0 = length of string (b)
  1263.     address + 1 = ? (set by INPUTS)
  1264.     address + 2 to address + 2 + b is set to 0 by default.
  1265.                   The actual text goes here.
  1266. SWAP         SWAP var,var
  1267.  
  1268. The contents of one variable is swapped with the other.
  1269. TERMINATE   TERMINATE
  1270.  
  1271. Same as STOP.
  1272. Terminates (STOPs) the program, all memory is automatically freed and interupts
  1273. 08 and 10h are reset if they were used.
  1274.  
  1275. TERMINATE is the same as: 1) RESET INTERUPTS
  1276.                           2) INT 20h
  1277. TEST         TEST BREAK
  1278.  
  1279. Checks to see if the break key has been pressed, the last ON BREAK statement is
  1280. executed if break was pressed.
  1281. TIMER         TIMER=n
  1282.  
  1283. Sets the low part of the time system variable to n.
  1284. This effects the computers current DOS TIME setting.
  1285. UNSIGNED    UNSIGNED v [,...]
  1286.  
  1287. Declares a variable of one word, 16 bits.
  1288. All unsigned variables must be defined at the start of a program, signed takes
  1289. preference over unsigned.
  1290.  
  1291. Unsigned variables range from 0 to 65535.
  1292. VAR         VAR[32] var [,...]
  1293.  
  1294. Declares a variable of one word (or double word - VAR32).
  1295. Only variables used before they are assigned a value must be declared with VAR.
  1296.  
  1297. All 32 bit variables must be declared using VAR32 because all assignment
  1298. operators default to 16 bits (one word).
  1299. WAIT         WAIT FOR n
  1300.  
  1301. n is recalculated until it gives a true (not 0) value.
  1302.  
  1303. Examples.
  1304.  
  1305. WAIT FOR KEYPRESSED
  1306. WAIT FOR KEY=27
  1307. WHILE         WHILE n statement
  1308.  
  1309. The statement is repeated until the expression n gives a false value, ie n=0.
  1310. WRITE         WRITE #n,length FROM address
  1311.  
  1312. 'Length' bytes at 'address' are written to a file, includes ERROR checking.
  1313.